package com.qfedu.tantu.service.impl;

import com.qfedu.tantu.config.RedisKeyConfig;
import com.qfedu.tantu.dao.SmsLogDao;
import com.qfedu.tantu.entity.SmsLog;
import com.qfedu.tantu.service.intf.SmsCodeService;
import com.qfedu.tantu.type.SmsLogType;
import com.qfedu.tantu.util.AliSmsUtil;
import com.qfedu.tantu.util.JedisUtil;
import com.qfedu.tantu.util.NumUtil;
import com.qfedu.tantu.util.StringUtil;
import com.qfedu.tantu.vo.R;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;

/**
 * @Description:
 * @Author: 赵金帅
 * @Date: 2022/06/29/20:47
 */
@Service
public class SmsCodeServiceimpl implements SmsCodeService {
    @Resource
    private SmsLogDao dao;
    @Override
    public R smsLogin(String phone) {
        if (StringUtils.hasLength(phone)){
            if (StringUtil.isPhone(phone)){
                String num = NumUtil.createCode(6)+"";
                System.out.println("登录验证码:"+num);
                if (/*AliSmsUtil.sendSmsCode(phone,num,AliSmsUtil.SMS_TEM_LOGIN)*/true){
                    JedisUtil.addString(RedisKeyConfig.SMS_CODE_LOGIN+phone,num, RedisKeyConfig.SMS_CODE_TIME);
                    dao.insert(new SmsLog(phone, SmsLogType.登录验证码.getValue(),"完成登录验证码发送！",1));
                    return R.ok();
                }else {
                    dao.insert(new SmsLog(phone, SmsLogType.登录验证码.getValue(),"登录验证码发送失败！",2));
                }
            }
        }
        return R.fail();
    }

    @Override
    public R smsUptPass(String phone) {
        if (StringUtils.hasLength(phone)){
            if (StringUtil.isPhone(phone)){
                String num = NumUtil.createCode(6)+"";
                System.out.println("修改密码验证码:"+num);
                if (/*AliSmsUtil.sendSmsCode(phone,num,AliSmsUtil.SMS_TEM_FIND)*/true){
                    JedisUtil.addString(RedisKeyConfig.SMS_CODE_FIND+phone,num, RedisKeyConfig.SMS_CODE_TIME);
                    dao.insert(new SmsLog(phone, SmsLogType.密码找回.getValue(), "完成密码找回验证码发送！", 1));
                    return R.ok();
                }else {
                    dao.insert(new SmsLog(phone, SmsLogType.密码找回.getValue(), "登录密码找回发送失败！", 2));
                }
            }
        }
        return R.fail();
    }
/*新用户注册验证码*/
    @Override
    public R registerCode(String phone) {
        //  1.校验参数
            if (StringUtil.isPhone(phone)) {
                //3.生成验证码
                int code = NumUtil.createCode(6);
                // 4.发送短信
                System.err.println(code);
                if (/*AliSmsUtil.sendSmsCode(phone,code +"",AliSmsUtil.SMS_TEM_ADD)*/true) {
                    JedisUtil.addString(RedisKeyConfig.SMS_CODE_ADD+phone,code +"", RedisKeyConfig.SMS_CODE_TIME);

                    //5.记录验证码 有效期 10分钟 Redis 可以为key设置有效期 数据类型：String 存储：key xing:code:phone:追加手机号 value:验证码
                   // JedisUtil.addString("phone:" + phone, code + "", 600);
                    //6.新增到数据库
                    dao.insert(new SmsLog(phone, SmsLogType.注册验证码.getValue(), "完成新用户注册验证码发送！", 1));
                    return R.ok();
                }
            }

        return R.fail();
    }
}
